

'''
已知考生的相关数据：
高考成为A分，考生位次为B名，该省总共有C名考生参考，试卷难度系数D。
高校X专业的最近5年招生历史相关数据为（从1-5）：
此X专业录取分数最低分A1-A5，
最高分M1-M5，
平均分G1-G5，
录取人数S1-S5，
最低分数排名位次W1-W5，
总考试人数Z1-Z5，
历年难度系数N1-N5。
今年改专业计划录取人数L人。
请根据以上条件，计算该改考生报考该X专业的所对应的录取概率多少？请给出具体的计算步骤。
'''
import math

a = 600 # 输入分数
b = 1000 # 位次
c = 100000 # 考生数
d = 0.6 # 难度系数
l = 100 # 专业录取人数
years = 5 # 最近数据年数
mins = [550, 560, 570, 580, 590] # 最近5年最低分 A
maxs = [650, 660, 670, 680, 690] # 最近5年最高分 M
avgs = [600, 610, 620, 630, 640] # 最近5年平均分 G
sums = [50, 60, 70, 80, 90] # 最近5年录取人数 S
wcss = [2000, 1800, 1600, 1400, 1200] # 最近5年最低分排名 W
zcss = [90000, 92000, 94000, 96000, 98000] # 最近5年总人数 Z
ndxs = [0.5, 0.55, 0.6, 0.65, 0.7] # 最近5年难度系数 N

k = 100 # 假设难度系数每变化0.1，录取最低位次相应变化k名，k可以根据经验或者对更多数据的分析确定
m = 0.1 # 招生计划变化对录取概率的影响系数m 例如，招生计划增加\(10\%\)，录取概率可能增加\(0.1\)等
wc = 0 # 可能录取的最次位次
p = 0 # 录取概率


def step1():
    # 分析历年录取数据与考生位次的关系
    p = 0
    for i in range(years):
        p = p + (wcss[i] / zcss[i])

    p = p / years
    print('历年该专业录取最低分对应的位次与当年全省总考生人数的比例平均值：', p)

    # 估算今年该专业可能的录取最低位次 wc
    global wc
    wc = int(p * c)
    print('该专业录取最低分对应的位次：', wc)


def step2():
    # 考虑试卷难度系数对录取分数和位次的影响
    n = 0
    for i in range(years):
        n = n + (d - ndxs[i])
    n= n / years
    print('历年试卷难度系数与今年试卷难度系数的差值平均值：', n)
    global wc
    wc = wc + k * n
    print('难度系数调整后的录取最低位次：', wc)


def step3():
    # 结合考生位次与调整后的录取最低位次计算录取概率

    global p
    # 比较考生位次B和调整后的录取最低位次wc
    if b > wc: # 说明考生位次低于平均水平，录取概率相对较低
        p = l / c
        print('说明考生位次低于平均水平，录取概率相对较低,该考生的录取概率为：', p)
        return

    s = 0
    for i in range(years):
        s = s + sums[i]
    s= s / years
    print('历年录取人数平均值：', s)

    # 计算招生计划变化比例
    r = (l-s) / s
    print('招生计划变化比例：', r)

    p = (1/(1+math.exp(-m*r)))*(1-abs((b-wc)/wc))



if __name__ == '__main__':
    step1()
    step2()
    step3()
    print('该考生的录取概率为：', p)
